package ar.edu.unrn.lia.dao.impl;

import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;

import javax.inject.Named;
import javax.persistence.criteria.CriteriaBuilder;
import javax.persistence.criteria.Predicate;
import javax.persistence.criteria.Root;

import ar.edu.unrn.lia.dao.AlquilerCuotaDAO;
import ar.edu.unrn.lia.generic.GenericDaoJpaImpl;
import ar.edu.unrn.lia.model.AlquilerCuota;
import ar.edu.unrn.lia.model.AlquilerCuota.CoutaEstado;
import ar.edu.unrn.lia.util.FuncionesDate;

@Named("alquilerCuotaDAO")
public class AlquilerCuotaDAOImpl extends GenericDaoJpaImpl<AlquilerCuota, Long> implements
		AlquilerCuotaDAO, Serializable {

	public Predicate[] getSearchPredicates(Root<AlquilerCuota> root,
			Map<String, String> filters) {

		CriteriaBuilder builder = this.entityManager.getCriteriaBuilder();
		List<Predicate> predicatesList = new ArrayList<Predicate>();
		root.alias("entity");

		return predicatesList.toArray(new Predicate[predicatesList.size()]);
	}
	
	public List<AlquilerCuota> alquilerCuotasVencidas()
	{		
	
    	List<AlquilerCuota> resultado =  entityManager.createQuery
				("from " + this.entityClass.getName() + " ac "
						+ "where ac.estado = :estado and  "
						+ "MONTH(ac.fecha)= :mes and  "
						+ "YEAR(ac.fecha) = :anio ").
				setParameter("estado", CoutaEstado.PE).
				setParameter("mes", FuncionesDate.mesHoy()).
				setParameter("anio", FuncionesDate.anioHoy()).	
				getResultList();
    	
		return resultado;
	}

}